#哈希表存放的是对，在哈希表中不再仅仅限制使用数字寻址，可以使用任意类型的数据类型寻址。

function create {
    <#
    # 创建哈希表
    # 之前使用@()创建数组，现在使用@{}创建哈希表
    #>
    $stu=@{ Name = "小明" ; Age="12" ; sex="男"  }  #分号隔开
    Write-Host ($stu["Name"] -eq "小明");


    #在哈希表中存储数组
    #可以在创建哈希表时就使用数组，因为创建数组和哈希表的的元素关键字不冲突。一个是逗号，一个是分号。
    $stu=@{ Name = "小明";Age="12";sex="男";Books="三国演义","围城","哈姆雷特" }

    #在哈希表中插入新的键值
    $Student=@{}
    $Student.Name="令狐冲"
    $Student.School="华山派"   #---->等同于 $Student["School"] = "华山派"

        
}

function test3 {
    <#
    # 哈希表值的更新和删除
    #>
    #如果要更新键的值，可以直接重写。如果要删除这个键值对，可以使用Remove方法，参数为Key.
    $Student=@{}
    $Student.Name="令狐冲"
    $Student.Remove("Name") 
}
<#
#使用哈希表格式化输出
#>

function test2 {
    #Powershell许多命令的输出结果都是以表格的形式，当然可以使用Format-Table自定义表格格式.
    #          Dir | Format-Table FullName,Mode
    #上述的命令只能限制表格输出那些列，隐藏那些列。但是对于列的宽度，列标题无能为力，但是有了哈希表就可以实现更多自定义了。
    #表格的每一个列包含四个属性：
    #	1. Expression:绑定的表达式
    #	2. Width:列宽度
    #	3. Label:列标题
    #	4. Alignment:列的对齐方式
        
    $column1 = @{expression="Name"; width=60;label="filename"; alignment="left"}
    $column2 = @{expression="LastWriteTime"; width=40;label="last modification"; alignment="right"}

    ls | Format-Table $column1, $column2
}



$products = @{
    serviceExtend = @{
 
    } ;
 
    desktop = @{
 
    };
    service = @{
 
    };
    test = @{
 
    }
 }

 Write-Host $products